package com.example.popmp3.dao;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.example.popmp3.model.Tb_musiclist;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Administrator on 2016/3/7.
 * 歌曲清单
 */
public class MusicListDAO {
    private DBOpenHelper helper;
    private SQLiteDatabase db;
    public MusicListDAO(Context context){
        helper=new DBOpenHelper(context);
    }
    /**
     * 添加歌曲
     * @param tb_musiclist
    */
    public void add(Tb_musiclist tb_musiclist) {
        db = helper.getWritableDatabase();// 初始化SQLiteDatabase对象
            db.execSQL(
                    "insert into tb_musiclist (_id,name,path) values (?,?,?)",
                    new Object[]{tb_musiclist.getid(), tb_musiclist.getName(), tb_musiclist.getPath()});

    }
    /**
     * 更新歌曲信息
     *
     * @param tb_musiclist
     */
    public void update(Tb_musiclist tb_musiclist) {
        db = helper.getWritableDatabase();// 初始化SQLiteDatabase对象
        // 执行修改收入信息操作
        db.execSQL(
                "update tb_musiclist set name = ?,path = ? where _id = ?",
                new Object[] { tb_musiclist.getName(), tb_musiclist.getPath(),tb_musiclist.getid()});
    }

    /**
     * 查找歌曲信息
     *
     * @param id
     * @return
     */
    public Tb_musiclist find(int id) {
        db = helper.getWritableDatabase();// 初始化SQLiteDatabase对象
        Cursor cursor = db.rawQuery(
                "select _id,name,path from tb_musiclist where _id = ?",
                new String[]{String.valueOf(id)});// 根据编号查找收入信息，并存储到Cursor类中
        if (cursor.moveToNext())// 遍历查找到的收入信息
        {
            return new Tb_musiclist(
                    cursor.getInt(cursor.getColumnIndex("_id")),
                    cursor.getString(cursor.getColumnIndex("name")),
                    cursor.getString(cursor.getColumnIndex("path")));
        }
        cursor.close();
        return null;// 如果没有信息，则返回null
    }

    /**
     * 刪除收入信息
     *
     * @param ids
     */
    public void detele(Integer... ids) {
        if (ids.length > 0)// 判断是否存在要删除的id
        {
            StringBuffer sb = new StringBuffer();// 创建StringBuffer对象
            for (int i = 0; i < ids.length; i++)// 遍历要删除的id集合
            {
                sb.append('?').append(',');// 将删除条件添加到StringBuffer对象中
            }
            sb.deleteCharAt(sb.length() - 1);// 去掉最后一个“,“字符
            db = helper.getWritableDatabase();// 初始化SQLiteDatabase对象
            // 执行删除收入信息操作
            db.execSQL("delete from tb_musiclist where _id in (" + sb + ")",
                    (Object[]) ids);
        }
    }

    /**
     * 获取歌曲信息
     *
     * @param start
     *            起始位置
     * @param count
     *            每页显示数量
     * @return
     */
    public List<Tb_musiclist> getScrollData(int start, int count) {
        List<Tb_musiclist> tb_musiclist = new ArrayList<Tb_musiclist>();// 创建集合对象
        db = helper.getWritableDatabase();// 初始化SQLiteDatabase对象
        // 获取所有收入信息
        Cursor cursor = db.rawQuery("select * from tb_musiclist limit ?,?",
                new String[] { String.valueOf(start), String.valueOf(count) });
        while (cursor.moveToNext())// 遍历所有的收入信息
        {
            // 将遍历到的收入信息添加到集合中
            tb_musiclist.add(new Tb_musiclist(cursor.getInt(cursor.getColumnIndex("_id")),
                    cursor.getString(cursor.getColumnIndex("name")),
                    cursor.getString(cursor.getColumnIndex("path"))));
        }
        cursor.close();
        return tb_musiclist;// 返回集合
    }

    /**
     * 获取总记录数
     *
     * @return
     */
    public long getCount() {
        db = helper.getWritableDatabase();// 初始化SQLiteDatabase对象
        Cursor cursor = db.rawQuery("select count(_id) from tb_musiclist", null);// 获取收入信息的记录数
        if (cursor.moveToNext())// 判断Cursor中是否有数据
        {
            return cursor.getLong(0);// 返回总记录数
        }
        cursor.close();
        return 0;// 如果没有数据，则返回0
    }

    /**
     * 获取收入最大编号
     *
     * @return
     */
    public int getMaxId() {
        db = helper.getWritableDatabase();// 初始化SQLiteDatabase对象
        Cursor cursor = db.rawQuery("select max(_id) from tb_musiclist", null);// 获取收入信息表中的最大编号
        while (cursor.moveToLast()) {// 访问Cursor中的最后一条数据
            return cursor.getInt(0);// 获取访问到的数据，即最大编号
        }
        cursor.close();
        return 0;// 如果没有数据，则返回0
    }
    public static String reverse1(String str) {
        return new StringBuffer(str).reverse().toString();
    }
}
